Message-oriented middleware is infrastructure that increases the interoperability, portability, and flexibility of software applications by allowing the software applications to communicate one with another by transmitting messages therebetween. Message-oriented middleware reduces the complexity of developing software applications that span multiple operating systems and network protocols by insulating application developers from the details of the various operating system and network interfaces. Accordingly, software developers can more easily integrate new software applications with existing software applications.
In typical message-oriented middleware configurations, messages are transmitted from one software application to another by way of one or more message brokers (“brokers”). However, before a software application can transmit a message by way of a broker, it has to establish a connection (e.g., a TCP/IP connection) with the broker. Unfortunately, brokers have various capacity and resource limitations. For example, some brokers cannot handle more than a certain number (e.g., two thousand) of concurrent connections.
These limitations can be problematic for a software application that needs to establish multiple concurrent connections with a broker (e.g., in order to concurrently communicate with multiple software applications). For example, a particular software application may need to establish thousands of concurrent connections with a broker. In so doing, the broker may become overloaded, fail, or otherwise enter into a fault state in which it is unable to relay messages to and from software applications associated therewith. An inoperable broker can cause undesirable delays, consume valuable network resources, and result in frustrating experiences for end users who rely on the software applications associated with the broker.